package dao;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;

import model.Pergunta;
import model.Anuncio;

public class PerguntaDAO {

	private Connection connection;

	public PerguntaDAO() throws SQLException {
		this.connection = ConnectionFactory.getConnection();
	}

	public Pergunta carregaPergunta(ResultSet rs, Pergunta pergunta)
			throws SQLException {

		RespostaDAO resposta = new RespostaDAO();
		
		pergunta.setIdPergunta(Long.parseLong(rs.getString("idPergunta")));
		pergunta.setPergunta(rs.getString("pergunta"));
		pergunta.setResposta(resposta.getResposta(pergunta));
		
		return pergunta;
	}

	public List<Pergunta> getLista(Anuncio anuncio) throws SQLException {

		PreparedStatement stmt = this.connection
				.prepareStatement("select * from pergunta where idanuncio=? order by idpergunta;");
		stmt.setLong(1, anuncio.getIdAnuncio());
		ResultSet rs = stmt.executeQuery();

		List<Pergunta> perguntas = new ArrayList<Pergunta>();
		while (rs.next()) {
			Pergunta pergunta = new Pergunta();
			carregaPergunta(rs, pergunta);
			//Como melhorar????
			pergunta.setAnuncio(anuncio);
			pergunta.setAssociado(anuncio.getAssociado());
			perguntas.add(pergunta);
		}

		rs.close();
		stmt.close();
		return perguntas;
	}

	public Pergunta getPergunta(long idPergunta) throws SQLException {
		PreparedStatement stmt = 
			this.connection.prepareStatement("select * from pergunta where idpergunta=?");
		stmt.setLong(1, idPergunta);
		
		ResultSet rs = stmt.executeQuery();
		
		boolean existeUm = rs.next();
		if( existeUm && rs.next() ) {
			existeUm = false;
		}
		
		Pergunta pergunta = null;
		if (existeUm) {
			rs.first();
			pergunta = new Pergunta();
			carregaPergunta(rs, pergunta);		
		}

		rs.close();
		stmt.close();
		return pergunta;

	}
}
